using System.ComponentModel.Composition;
using Microsoft.VisualStudio.Text.Classification;
using Microsoft.VisualStudio.Utilities;

namespace PostscriptTools {
	/// <summary>
	/// Define the content types and classification types
	/// </summary>
	internal static class PostscriptClassificationDefinition {
		#region Content Type Definition and associated File Extension 

		[Export]
		[Name("postscript")]
		[BaseDefinition("code")]
		internal static ContentTypeDefinition postscriptContentTypeDefinition = null;

		[Export]
		[FileExtension(".ps")]
		[ContentType("postscript")]
		internal static FileExtensionToContentTypeDefinition postscriptPsFileExtensionDefinition = null;

		[Export]
		[FileExtension(".eps")]
		[ContentType("postscript")]
		internal static FileExtensionToContentTypeDefinition postscriptEpsFileExtensionDefinition = null;

		[Export]
		[FileExtension(".hqn")]
		[ContentType("postscript")]
		internal static FileExtensionToContentTypeDefinition postscriptLogfileFileExtensionDefinition = null;

		#endregion

		#region ClassificationTypeDefinition for non builtin ones

		[Export(typeof(ClassificationTypeDefinition))]
		[Name("postscript.procoperator")]
		internal static ClassificationTypeDefinition procoperatorClassificationDefinition = null;

		[Export(typeof(ClassificationTypeDefinition))]
		[Name("postscript.hexstring")]
		internal static ClassificationTypeDefinition hexstringClassificationDefinition = null;

		[Export(typeof(ClassificationTypeDefinition))]
		[Name("postscript.ascii85string")]
//		[BaseDefinition("postscript.value")]
		internal static ClassificationTypeDefinition ascii85stringClassificationDefinition = null;

		[Export(typeof(ClassificationTypeDefinition))]
		[Name("postscript.immediatename")]
		internal static ClassificationTypeDefinition immediatenameDefaultClassificationDefinition = null;

		[Export(typeof(ClassificationTypeDefinition))]
		[Name("postscript.literalname")]
		internal static ClassificationTypeDefinition literalnameClassificationDefinition = null;

		[Export(typeof(ClassificationTypeDefinition))]
		[Name("postscript.arrayoperator")]
		internal static ClassificationTypeDefinition arrayoperatorClassificationDefinition = null;

		[Export(typeof(ClassificationTypeDefinition))]
		[Name("postscript.dictoperator")]
		internal static ClassificationTypeDefinition dictoperatorClassificationDefinition = null;

		[Export(typeof(ClassificationTypeDefinition))]
		[Name("postscript.binary")]
		internal static ClassificationTypeDefinition binaryClassificationDefinition = null;

		[Export(typeof(ClassificationTypeDefinition))]
		[Name("postscript.error")]
		internal static ClassificationTypeDefinition errorClassificationDefinition = null;

		#endregion
	}
}
